import Vue from 'vue'
import Vuex from 'vuex'
// import vuexCache from 'vuex-cache'
Vue.use(Vuex)
// 这里定义初始值
let state = {
    count:10,
    debug:true,
    dialog:{
        show:false,
    },
    schemas:{
    },
    history:{},
    upload:{
        imageHost:'/api/manager/upload/images',
        fileHost:'/api/manager/upload/files',
    },
    pipe:{},//用来互通筛选条件
    dataRefreshEvents:'{}'//监听刷新事件

};

const mutations = {
    /**
     * 对event中的对应model进行监控,只要发现值变化,就同时刷新列表
     * @param model model名
     */
    refreshEvents(state,model){
        //为啥要这么写? 因为如果不提前定义好state的model,无法监听,只能监听整个json了
        let json = JSON.parse(state.dataRefreshEvents)
        if(!json[model])
            json[model] = 0;
        json[model]++;
        json = JSON.stringify(json);
        state.dataRefreshEvents=json;
    },

    pipe(state,payload){
        Vue.set(state.pipe,payload.name,payload.value)
    },

};

// 事件触发后的逻辑操作
// 参数为事件函数
const actions = {

};

const getters = {
    //用来互通数据
    getPipe:(state) => (model) => {
        return state.pipe[model];
    },
    //判定表格是不是需要刷新
    getRefreshEvents:(state) => (model) => {
        let json = JSON.parse(state.dataRefreshEvents);
        return json[model];
    }
};

export default new Vuex.Store({
    state,
    // plugins: [vuexCache],
    mutations,
    actions,
    getters
})